﻿using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Xml.Linq;
using Coolite.Ext.Web;
using GUESTSMANAGEMENT.Controller;

namespace GUESTSMANAGEMENT.View.User
{
    public partial class gridUser : System.Web.UI.UserControl
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            //Carrega os dados na grid quando abre a tela.
            if (!Ext.IsAjaxRequest)
            {
                try
                {
                    this.userStore.DataSource = Controller.User.getGridList();
                    this.userStore.DataBind();
                }
                catch
                {
                    Ext.Msg.Alert("Alerta!", "Ocorreu um erro durante a transação! Tente novamente!").Show();
                }
            }
        }

        //Reload na grid quando salva ou atualiza os dados.
        public Store GridStore
        {
            get;
            set;
        }

        //Chama método GridStore
        protected void Page_Init(object sender, EventArgs e)
        {
            try
            {
                this.GMUser.GridStore = this.userStore;
                this.GridStore = this.userStore;
            }
            catch
            {
                Ext.Msg.Alert("Alerta!", "Ocorreu um erro durante a transação! Tente novamente!").Show();
            }
        }

        //Atualiza grid quando á dado refesh.
        protected void Refresh(object sender, StoreRefreshDataEventArgs e)
        {
            try
            {
                this.userStore.DataSource = Controller.User.getGridList();
                this.userStore.DataBind();
            }
            catch
            {
                Ext.Msg.Alert("Alerta!", "Ocorreu um erro durante a transação! Tente novamente!").Show();
            }
        }

        //Edita o pedido cadastrado.
        protected void EditUser(object sender, AjaxEventArgs e)
        {
            try
            {
                string id = e.ExtraParams["id"];
                this.GMUser.SetUser(Controller.User.RetornarUser(int.Parse(id)));
                this.GMUser.ShowUser();
            }
            catch
            {
                Ext.Msg.Alert("Alerta!", "Ocorreu um erro durante a transação! Tente novamente!").Show();
            }
        }

        //Método para excluir.
        protected void ConfirmDeleteUser(object sender, AjaxEventArgs e)
        {
            try
            {
                string selectUser = this.txt_idUser.Text.Trim();
                gmuser user = Controller.User.getByUser(int.Parse(selectUser));
                Controller.User.deletUser(user);
                this.GridStore.AddScript(string.Format("{0}.reload();", this.GridStore.ClientID));
                Ext.Msg.Alert("Alerta!", "Usuário <b>" + user.NMUSER + "</b> excluído com sucesso!").Show();
            }
            catch
            {
                Ext.Msg.Alert("Alerta!", "Ocorreu um erro durante a transação! Tente novamente!").Show();
            }
        }
    }
}